//
// Created by mongobaba on 2021/6/6.
//

#include "unit_test.h"
#include "json_validator.h"

// 特殊情况
TEST(parse_number_empty) {
    json_validator validator("");
    ASSERT_EQ(false, validator.parse_number());
    ASSERT_EQ(std::string(""), validator.left());
}

// 正常情况，拥有全部属性
TEST(parse_number_all) {
    json_validator validator("3.14e10x");
    ASSERT_EQ(true, validator.parse_number());
    ASSERT_EQ(std::string("x"), validator.left());
}

// 正常情况，只有整数部分
TEST(parse_number_only_integer) {
    json_validator validator("314x");
    ASSERT_EQ(true, validator.parse_number());
    ASSERT_EQ(std::string("x"), validator.left());
}

// 正常情况，整数+小数
TEST(parse_number_float) {
    json_validator validator("3.14x");
    ASSERT_EQ(true, validator.parse_number());
    ASSERT_EQ(std::string("x"), validator.left());
}

// 正常情况，没有浮点
TEST(parse_number_no_exponent) {
    json_validator validator("3e10x");
    ASSERT_EQ(true, validator.parse_number());
    ASSERT_EQ(std::string("x"), validator.left());
}

// 异常情况，没有任何有效部分
TEST(parse_number_no_valid_part) {
    json_validator validator("x10x");
    ASSERT_EQ(false, validator.parse_number());
    ASSERT_EQ(std::string("x10x"), validator.left());
}
